/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.unesp.demac.bcc.soo.dao;

import br.unesp.demac.bcc.soo.bean.Endereco;
import br.unesp.demac.bcc.soo.bean.Pessoa;
import br.unesp.demac.bcc.soo.util.FabricaConexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author flavioam
 */
public class EnderecoDAOImp implements EnderecoDAO {
    
    @Override
    public Endereco selecionaEnderecoByIdPessoa(int idPessoa) {

        Endereco e = null;
        Connection con = null;

        try {

            con = FabricaConexao.getConexao();

            String sql = "select * from Enderecos where Pessoas_idPessoas = ?";

            PreparedStatement pstmt = con.prepareStatement(sql);

            pstmt.setInt(1, idPessoa);

            ResultSet rs = pstmt.executeQuery();

            if (rs.next()) {

                e = new Endereco();
                e.setCidade(rs.getString("cidade"));
                e.setEndereco(rs.getString("endereco"));
                e.setEstado(rs.getString("estado"));
                e.setIdEndereco(rs.getInt("idEnderecos"));
            }

        } catch (SQLException ex) {

            throw new Exception(ex.getMessage());

        } catch (Exception ex) {

            throw new Exception(ex.getMessage());

        } finally {

            FabricaConexao.fechar(con);
            return e;
        }
    }

    @Override
    public boolean salvaEndereco(Pessoa p,Connection con) {

        boolean saved = false;

        try {

            String sql = "insert into Enderecos (endereco,cidade,estado,Pessoas_idPessoas) values(?,?,?,?)";

            PreparedStatement pstmt = con.prepareStatement(sql);
            
            Endereco end = p.getEndereco();

            pstmt.setString(1, end.getEndereco());
            pstmt.setString(2, end.getCidade());
            pstmt.setString(3, end.getEstado());
            pstmt.setInt(4, p.getIdPessoa());
            

            pstmt.executeUpdate();

            saved = true;

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {
            return saved;
        }
    }    
    
    @Override
    public boolean editaEndereco(Pessoa p,Connection con) {

        boolean saved = false;

        try {

            String sql = "update Enderecos set endereco = ?, cidade = ?, estado = ? where Pessoas_idPessoas = ?";

            PreparedStatement pstmt = con.prepareStatement(sql);
            
            Endereco end = p.getEndereco();

            pstmt.setString(1, end.getEndereco());
            pstmt.setString(2, end.getCidade());
            pstmt.setString(3, end.getEstado());
            pstmt.setInt(4, p.getIdPessoa());
            

            pstmt.executeUpdate();

            saved = true;

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        } finally {
            
            System.out.println(saved);
            return saved;
        }
    }
}
